package com.helin.helinhealth.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 管理员用户实体类
 * 
 * <p>
 * 该实体类对应数据库中的 admin 表，用于存储后台管理系统用户的信息，
 * 包括用户名、密码、角色等。后台管理系统的身份认证基于此表。
 * </p>
 */
@Data
@TableName("admin")
@Schema(description = "管理员表")
public class Admin {
    
    /**
     * 管理员ID，自增主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description = "管理员ID")
    private Long id;
    
    /**
     * 用户名，登录账号
     */
    @TableField("username")
    @Schema(description = "用户名")
    private String username;
    
    /**
     * 密码，加密存储
     */
    @TableField("password")
    @Schema(description = "密码")
    private String password;
    
    /**
     * 昵称
     */
    @TableField("nickname")
    @Schema(description = "昵称")
    private String nickname;
    
    /**
     * 头像URL
     */
    @TableField("avatar")
    @Schema(description = "头像URL")
    private String avatar;
    
    /**
     * 手机号
     */
    @TableField("phone")
    @Schema(description = "手机号")
    private String phone;
    
    /**
     * 电子邮箱
     */
    @TableField("email")
    @Schema(description = "电子邮箱")
    private String email;
    
    /**
     * 角色：1-超级管理员 2-普通管理员
     */
    @TableField("role")
    @Schema(description = "角色：1-超级管理员 2-普通管理员")
    private Integer role;
    
    /**
     * 最后登录时间
     */
    @TableField("last_login_time")
    @Schema(description = "最后登录时间")
    private LocalDateTime lastLoginTime;
    
    /**
     * 账号状态：0-禁用 1-启用
     */
    @TableField("status")
    @Schema(description = "账号状态：0-禁用 1-启用")
    private Integer status;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记：0-未删除 1-已删除
     */
    @TableField("is_deleted")
    @TableLogic
    @Schema(description = "逻辑删除标记")
    private Integer isDeleted;
} 